
$(function () {
    //注意：选项卡 依赖 element 模块，否则无法进行功能性操作
    layui.use(['element','form'], function(){
        var element = layui.element;

        element.on('tab(docDemoTabBrief)', function(data){
            vm.nav_tabs = data.index==0?2:1;
            vm.query();
        });
   });
    $('.selectpicker').selectpicker({
        'selectedText': 'cat',
         'noneSelectedText': '请选择',
        'deselectAllText': '全不选',
        'selectAllText': '全选'
    });
   vm.resetFrom();
   $('#bootstrap-table')
        .bootstrapTable(
            {
                method : 'post', // 服务器数据的请求方式 get or post
                url : baseURL + 'platformjob/findPlatformJobPage', // 服务器数据的加载地址
                showRefresh : true,
                showToggle : true,
                showColumns : true,
                //showExport :true,
                sortable: true,
                sortName:"userId",// 排序列名称
                sortOrder: "desc",
                iconSize : 'outline',
                toolbar : '#exampleToolbar',
                striped : true, // 设置为true会有隔行变色效果
                dataType : "json", // 服务器返回的数据类型
                pagination : true, // 设置为true会在底部显示分页条
                // queryParamsType : "limit",
                // //设置为limit则会发送符合RESTFull格式的参数
                singleSelect : false, // 设置为true将禁止多选
                // contentType : "application/x-www-form-urlencoded",
                // //发送到服务器的数据编码类型
                pageSize : 10, // 如果设置了分页，每页数据条数
                pageNumber : 1, // 如果设置了分布，首页页码
                // search : true, // 是否显示搜索框
                //showColumns : false, // 是否显示内容下拉框（选择显示的列）
                sidePagination : "server", // 设置在哪里进行分页，可选值为"client" 或者
                // "server"
                queryParams : function(params) {
                    //console.log(params)
                    return {
                        // 说明：传入后台的参数包括offset开始索引，limit步长，sort排序列，order：desc或者,以及所有列的键值对
                        page:(params.offset/params.limit) + 1,
                        limit:params.limit,
                        jobType:vm.nav_tabs,
                        beanName:vm.q.beanName,
                        remark:vm.q.remark
                        // sidx: params.sort,      //排序列名
                        //order: params.order //排位命令（desc，asc）
                        /* sort:"userId",
                        order:"desc" */
                    };
                },
                complete:function () {
                    $('[data-toggle="tooltip"]').tooltip({
                        html:true
                    });
                },
                onLoadSuccess:function () {
                    $('[data-toggle="tooltip"]').tooltip({
                        html:true
                    });
                },
                // //请求服务器数据时，你可以通过重写参数的方式添加一些额外的参数，例如 toolbar 中的参数 如果
                // queryParamsType = 'limit' ,返回参数必须包含
                // limit, offset, search, sort, order 否则, 需要包含:
                // pageSize, pageNumber, searchText, sortName,
                // sortOrder.
                // 返回false将会终止请求
                columns : [
                    {
                        checkbox : true
                    },
                    {
                        field : 'id',
                        align:'center',
                        title : '任务ID'
                    },
                    {
                        field : 'beanName', // 列字段名
                        align:'center',
                        title : 'bean名称',// 列标题
                    },
                    {
                        field : 'methodName',
                        align:'center',
                        width:200,
                        title : '方法名称'
                    },
                    {
                        field : 'intervalSeconds',
                        align:'center',
                        title : '时间间隔'
                    },
                    {
                        field : 'beginDate',
                        align:'center',
                        width:200,
                        title : '开始时间'
                    },
                    {
                        field : 'endDate',
                        align:'center',
                        width:200,
                        title : '结束时间'
                    },
                    {
                        field : 'platformName',
                        align:'center',
                        title : '使用平台',
                        formatter: function(value, options, row){
                           // console.log(value[1])
                           var str = '';
                            value.map(function (item) {
                                str = str + item + '<br />';
                            });
                           // console.log(str)
                           var toolTips = '<i data-toggle="tooltip" data-placement="top" title="'+str+'">'+value.length+'</i>'
                           return toolTips;
                        }
                    },
                    {
                        field : 'cronExpression',
                        title : 'cron表达式',
                        align:'center',
                        width:200,
                        titleTooltip: "this is name"
                    },
                    {
                        field : 'avgValue',
                        align:'center',
                        title : '比例'
                    },
                    {
                        field : 'remark',
                        align:'center',
                        title : '备注'
                    },
                    {
                        field : 'status',
                        align:'center',
                        title : '状态',
                        formatter: function(value, options, row){
                            return value === 0 ?
                                '<span class="label label-success">正常</span>' :
                                '<span class="label label-danger">暂停</span>';
                        }
                    },
                    {
                        title : '操作',
                        field : 'id',
                        width:330,
                        align : 'center',
                        formatter : function(
                            value, row,
                            index)  {
                            //console.log(value);
                            return '<div class="btn btn-warning" onclick="info('+value+')">日志详情</div>';
                        }
                    } ]
            });
    $('#bootstrap-table').on('click-row.bs.table', function (e, row, element)
    {
       $(element).find("input").click();
       if($(element).hasClass("selected")){
           $(element).addClass("selectedTr");
        }else{
           $(element).removeClass("selectedTr");
        }
       //console.log($(element).find("input"));
      // console.log(row);
      // console.log(e);
    });
});

function info(id){
    vm.showList = 3;
    vm.id = id;
   // console.log(id);
    var winopen=function(text){
        layer.open({
            content:text
        });
    };
    $('#bootstrap-table1')
        .bootstrapTable(
            {
                method : 'post', // 服务器数据的请求方式 get or post
                url : baseURL + 'platformjob/findPlatformJobLogPage', // 服务器数据的加载地址
                showRefresh : true,
                showToggle : true,
                showColumns : true,
                //showExport :true,
                sortable: true,
                sortName:"userId",// 排序列名称
                sortOrder: "desc",
                iconSize : 'outline',
                toolbar : '#exampleToolbar',
                striped : true, // 设置为true会有隔行变色效果
                dataType : "json", // 服务器返回的数据类型
                pagination : true, // 设置为true会在底部显示分页条
                // queryParamsType : "limit",
                // //设置为limit则会发送符合RESTFull格式的参数
                singleSelect : false, // 设置为true将禁止多选
                // contentType : "application/x-www-form-urlencoded",
                // //发送到服务器的数据编码类型
                pageSize : 10, // 如果设置了分页，每页数据条数
                pageNumber : 1, // 如果设置了分布，首页页码
                // search : true, // 是否显示搜索框
                //showColumns : false, // 是否显示内容下拉框（选择显示的列）
                sidePagination : "server", // 设置在哪里进行分页，可选值为"client" 或者
                // "server"
                queryParams : function(params) {
                    return {
                        // 说明：传入后台的参数包括offset开始索引，limit步长，sort排序列，order：desc或者,以及所有列的键值对
                        limit : params.limit+'',
                        page : ((params.offset/params.limit) + 1)+'',
                        id: vm.id,
                        jobId:vm.q.jobId,
                        platformId:vm.platformId
                    };
                },
                // //请求服务器数据时，你可以通过重写参数的方式添加一些额外的参数，例如 toolbar 中的参数 如果
                // queryParamsType = 'limit' ,返回参数必须包含
                // limit, offset, search, sort, order 否则, 需要包含:
                // pageSize, pageNumber, searchText, sortName,
                // sortOrder.
                // 返回false将会终止请求
                columns : [
                    {
                        field : 'logId',
                        align:'center',
                        title : '日志ID'
                    },
                    {
                        field : 'jobId',
                        align:'center',
                        title : '任务ID'
                    },
                    {
                        field : 'beanName', // 列字段名
                        align:'center',
                        title : 'bean名称',// 列标题
                    },
                    {
                        field : 'params', // 列字段名
                        align:'center',
                        title : '参数',// 列标题
                    },
                    {
                        field : 'status', // 列字段名
                        align:'center',
                        title : '状态',// 列标题
                        formatter: function(value, options, row){
                            return value === 0 ?
                                '<span class="label label-success">成功</span>' :
                                // '<span class="label label-danger pointer" onclick="vm.showError('+row.logId+')">失败</span>';
                                '<span class="label label-danger pointer">失败</span>';
                        }
                    },
                    {
                        field : 'times', // 列字段名
                        align:'center',
                        title : '耗时(单位：毫秒)',// 列标题
                    },
                    {
                        field : 'createTime', // 列字段名
                        align:'center',
                        title : '执行时间',// 列标题
                    },
                    {
                        field : 'error',
                        align:'center',
                        title : '报错',
                        formatter: function(value, options, row){
                           // console.log(value);
                            if(value){
                                return '<div class="errors" onclick="winopen(\''+value+'\')">'+value+'</div>'
                            }else{
                                return ''
                            }
                        }
                    }]
            });
    if(vm.bootstrapNum>1){
        vm.reloadLog();
    }
    vm.bootstrapNum ++ ;
}
var types = 2;
var vm = new Vue({
    el:'#rrapp',
    data:{
        q:{
            beanName: null,
            jobId:null,
            remark:null
        },
        bootstrapNum:1,
        isDel:false,
        showList: 1,
        title: null,
        isReadOnly:null,
        platformId:'',
        schedule: {},
        nav_tabs:2,
        istype:2,
        isstart:2
    },

    methods: {
        query: function () {
           vm.reload();
        },
        queryLog:function () {
            vm.reloadLog();
        },
        add: function(){
            vm.showList = 2;
            vm.title = "新增";
            vm.isReadOnly = null;
            vm.schedule = {};
            $('#radios :radio').eq(0).prop('checked','checked');
            $('#radios :radio').eq(1).removeAttr('checked');
            $('#radios2 :radio').eq(0).prop('checked','checked');
            $('#radios2 :radio').eq(1).removeAttr('checked');
            // $('#radios3 :radio').eq(0).prop('checked','checked');
            // $('#radios3 :radio').eq(1).removeAttr('checked');
            $('#startTime').val('');
            $('#endTime').val('');
            vm.resetFrom();
         },
        resetFrom:function () {
             $('#siteSelect').selectpicker('val', '');
            $('#siteSelect').selectpicker('refresh');
            vm.schedule.platformName = [];
            layui.use('laydate', function(){
                var laydate = layui.laydate;
                //日期时间范围
               // console.log(vm.schedule.endDate)
              var nowTime = new Date();
              var starTime = laydate.render({
                    elem: '#startTime'
                    ,type: 'datetime',
                    position: 'fixed'
               });
              var endTime = laydate.render({
                    elem: '#endTime'
                    ,type: 'datetime'
                    ,position: 'fixed'
                 });
             });
            vm.getAllSite();
            vm.changeSelect();
        },
        getAllSite:function () {
            $("#siteSelect").empty();
            $.get(baseURL + "platform/findAllPlatform", function(r) {
                if (r.code === 0) {
                    var str = '';
                    r.platformList.map(function (item) {
                        str = str + '<option class="addOption" value="'+ item.platformId +'">' + item.platformName + '</option>';
                    });
                    $("#siteSelect").append(str);
                    $('#siteSelect').selectpicker('refresh');
                    $("#siteSelect2").append(str);
                    $('#siteSelect2').selectpicker('refresh');
                } else {
                    alert(r.msg);
                }
            });
        },
        changeSelect:function () {
           var arrName =  [];
            vm.schedule.platformId = [];
            vm.schedule.platformName = [];
            $('#siteSelect').on('changed.bs.select',function(e){
                //console.log(vm.schedule.platformName)
               //console.log($(".bootstrap-select .btn").prop("title").split(","));
                arrName = [];
               $(".bootstrap-select .btn").prop("title").split(",").map(function (item) {
                     arrName.push(item);
                 });
                vm.schedule.platformName = arrName;
                vm.schedule.platformId = $(this).val();
            });
            $('#siteSelect2').on('changed.bs.select',function(e){
                vm.platformId = $(this).val();
             });
         },
        update: function () {
            var jobId = getSelectedRow();
           // console.log(jobId);
            if(jobId == null){
                return ;
            }
            vm.schedule.platformName = [];
            $.ajax({
                type: "POST",
                url: baseURL + 'platformjob/findPlatformJobById',
                contentType: "application/json",
                data: JSON.stringify({id:jobId.id}),
                success: function(r){
                   if(r.code === 0){
                        vm.showList = 2;
                        vm.title = "修改";
                        vm.schedule = r.result;
                        vm.isReadOnly = "readonly";
                        vm.schedule.id = r.result.id;
                       var i = r.result.jobType==2?0:1;
                        $('#radios :radio').removeAttr('checked');
                        $('#radios :radio').eq(i).prop('checked','checked');
                        $('#siteSelect').selectpicker('val', r.result.platformId);
                        $('#siteSelect').selectpicker('refresh');
                        if(r.result.beginDate && r.result.endDate){
                            $("#startTime").val(r.result.beginDate);
                            $("#endTime").val(r.result.endDate);
                        }else{
                            $('#endTime').val('');
                            $('#startTime').val('');
                        }

                    }else{
                        alert(r.msg);
                    }
                }
            });
        },
        copy:function(){
            var jobId = getSelectedRow();
            if(jobId == null){
                return ;
            }
            vm.schedule.platformName = [];
            $.ajax({
                type: "POST",
                url: baseURL + 'platformjob/findPlatformJobById',
                contentType: "application/json",
                data: JSON.stringify({id:jobId.id}),
                success: function(r){
                    if(r.code === 0){
                        vm.showList = 2;
                        vm.title = "复制";
                        vm.schedule = r.result;
                        vm.schedule.id = null;
                        var i = r.result.jobType==2?0:1;
                        $('#radios :radio').removeAttr('checked');
                        $('#radios :radio').eq(i).prop('checked','checked');
                        vm.isReadOnly = null;
                        $('#siteSelect').selectpicker('val', r.result.platformId);
                        $('#siteSelect').selectpicker('refresh');
                        if(r.result.beginDate && r.result.endDate){
                            $("#startTime").val(r.result.beginDate);
                            $("#endTime").val(r.result.endDate);
                        }else{
                            $('#endTime').val('');
                            $('#startTime').val('');
                        }
                    }else{
                        alert(r.msg);
                    }
                }
            });
            //console.log(jobId,'ssssssssss')
        },
        saveOrUpdate: function (event) {
            var url = vm.schedule.id == null ? "platformjob/savePlatformJob" : "platformjob/updatePlatformJob";
            var btn  = vm.$refs.schedule_submit;
            //console.log(btn);
            vm.schedule.jobType = $('input[name="type"]:checked').val();
            vm.schedule.firstStart = $('input[name="start"]:checked').val()==2?true:false;
            //console.log(vm.schedule)
            vm.schedule.beginDate = $("#startTime").val();
            vm.schedule.endDate = $("#endTime").val();
            if(checkIsBank(vm.schedule.beanName) || checkIsBank(vm.schedule.platformId) || checkIsBank(vm.schedule.platformName)
                || checkIsBank(vm.schedule.methodName) || checkIsBank(vm.schedule.cronExpression)){
               alert('有*的为必填字符，请完整输入');
               return;
            }
            btn.disabled = true;
            $.ajax({
                type: "POST",
                url: baseURL + url,
                contentType: "application/json",
                data: JSON.stringify(vm.schedule),
                success: function(r){
                    btn.disabled = false;
                    if(r.code === 0){
                        alert('操作成功', function() {
                            vm.reload();
                        });
                    }else{
                        alert(r.msg);
                    }
                }
            });
        },
        del: function (event) {
            var jobIds = getSelectedRows();
            if(jobIds == null){
                return ;
            }
            var ids = [];
            jobIds.map(function (item) {
                ids.push(item.id)
            });
            confirm('确定要删除选中的'+jobIds.length+'条记录？', function(){
                if(!vm.isDel){
                    vm.isDel = true;
                    $.ajax({
                        type: "POST",
                        url: baseURL + "platformjob/deletePlatformJob",
                        contentType: "application/json",
                        data: JSON.stringify(ids),
                        success: function(r){
                            vm.isDel = false;
                            if(r.code == 0){
                                alert('操作成功', function(index){
                                    vm.reload();
                                });
                            }else{
                                alert(r.msg);
                            }
                        }
                    });
                }else{
                    alert("操作过于频繁!")
                }

            });
        },
        pause: function (event) {
            var jobIds = getSelectedRows();
            if(jobIds == null){
                return ;
            }
            //console.log(jobIds)
            var ids = [];
            jobIds.map(function (item) {
                ids.push(item.id)
            });
            confirm('确定要暂停选中的记录？', function(){
                if(!vm.isDel) {
                    vm.isDel = true;
                    $.ajax({
                        type: "POST",
                        url: baseURL + "platformjob/pausePlatformJob",
                        contentType: "application/json",
                        data: JSON.stringify(ids),
                        success: function (r) {
                            vm.isDel = false;
                            if (r.code == 0) {
                                alert('操作成功', function (index) {
                                    vm.reload();
                                });
                            } else {
                                alert(r.msg);
                            }
                        }
                    });
                }else{
                    alert("操作过于频繁!")
                }
            });
        },
        resume: function (event) {
            var jobIds = getSelectedRows();
            if(jobIds == null){
                return ;
            }
            var ids = [];
            jobIds.map(function (item) {
                ids.push(item.id)
            });
            confirm('确定要恢复选中的记录？', function(){
                if(!vm.isDel) {
                    vm.isDel = true;
                    $.ajax({
                        type: "POST",
                        url: baseURL + "platformjob/resumePlatformJob",
                        contentType: "application/json",
                        data: JSON.stringify(ids),
                        success: function (r) {
                            vm.isDel = false;
                            if (r.code == 0) {
                                alert('操作成功', function (index) {
                                    vm.reload();
                                });
                            } else {
                                alert(r.msg);
                            }
                        }
                    });
                }else{
                    alert("操作过于频繁!")
                }
            });
        },
        runOnce: function (event) {
            var jobIds = getSelectedRows();
            if(jobIds == null){
                return ;
            }
            var ids = [];
            jobIds.map(function (item) {
                ids.push(item.id)
            });
            confirm('确定要立即执行选中的记录？', function() {
                if(!vm.isDel){
                    vm.isDel = true;
                     $.ajax({
                        type: "POST",
                        url: baseURL + "platformjob/runPlatformJob",
                        contentType: "application/json",
                        data: JSON.stringify(ids),
                        success: function (r) {
                            vm.isDel = false;
                            if (r.code == 0) {
                                alert('操作成功', function (index) {
                                    vm.reload();
                                });
                            } else {
                                alert(r.msg);
                            }
                        }
                    });
                }else{
                    alert("操作过于频繁!")
                }
            });
        },
        reload: function (event) {
            vm.showList = 1;
            var opt = {
                url: baseURL + 'platformjob/findPlatformJobPage',
                query:{
                    limit : 10,
                    page : 0,
                    jobType:vm.nav_tabs,
                    beanName:vm.q.beanName,
                    remark:vm.q.remark
                }
            };
           $('#bootstrap-table').bootstrapTable('refresh',
                opt);
         },
        reloadLog: function (event) {
            $('#siteSelect2').selectpicker('val', '');
            $('#siteSelect2').selectpicker('refresh');
            vm.showList = 3;
            var opt = {
                url: baseURL + 'platformjob/findPlatformJobLogPage',
                silent: true,
                query:{
                    limit : 10,
                    page : 0,
                    id:vm.id,
                    jobId:vm.q.jobId,
                    platformId:vm.platformId
                }
            };
            $('#bootstrap-table1').bootstrapTable('refresh',
                opt);
            vm.q.jobId = '';
            vm.platformId = '';
        }
    }
});